home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / mach-ixp2000 / include / mach / irqs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  7.5 KB  |  208 lines

  1. /*
  2.  * arch/arm/mach-ixp2000/include/mach/irqs.h
  3.  *
  4.  * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
  5.  * Maintainer: Deepak Saxena <dsaxena@plexity.net>
  6.  *
  7.  * Copyright (C) 2002 Intel Corp.
  8.  * Copyright (C) 2003-2004 MontaVista Software, Inc.
  9.  * 
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License version 2 as
  12.  * published by the Free Software Foundation.
  13.  */
  14.  
  15. #ifndef _IRQS_H
  16. #define _IRQS_H
  17.  
  18. /*
  19.  * Do NOT add #ifdef MACHINE_FOO in here.
  20.  * Simpy add your machine IRQs here and increase NR_IRQS if needed to
  21.  * hold your machine's IRQ table.
  22.  */
  23.  
  24. /*
  25.  * Some interrupt numbers go unused b/c the IRQ mask/ummask/status
  26.  * register has those bit reserved. We just mark those interrupts
  27.  * as invalid and this allows us to do mask/unmask with a single
  28.  * shift operation instead of having to map the IRQ number to
  29.  * a HW IRQ number.
  30.  */
  31. #define    IRQ_IXP2000_SOFT_INT        0 /* soft interrupt */
  32. #define    IRQ_IXP2000_ERRSUM        1 /* OR of all bits in ErrorStatus reg*/
  33. #define    IRQ_IXP2000_UART        2
  34. #define    IRQ_IXP2000_GPIO        3
  35. #define    IRQ_IXP2000_TIMER1             4
  36. #define    IRQ_IXP2000_TIMER2             5
  37. #define    IRQ_IXP2000_TIMER3             6
  38. #define    IRQ_IXP2000_TIMER4             7
  39. #define    IRQ_IXP2000_PMU                8               
  40. #define    IRQ_IXP2000_SPF                9  /* Slow port framer IRQ */
  41. #define    IRQ_IXP2000_DMA1              10
  42. #define    IRQ_IXP2000_DMA2              11
  43. #define    IRQ_IXP2000_DMA3              12
  44. #define    IRQ_IXP2000_PCI_DOORBELL    13
  45. #define    IRQ_IXP2000_ME_ATTN           14 
  46. #define    IRQ_IXP2000_PCI           15 /* PCI INTA or INTB */
  47. #define    IRQ_IXP2000_THDA0           16 /* thread 0-31A */
  48. #define    IRQ_IXP2000_THDA1          17 /* thread 32-63A, IXP2800 only */
  49. #define    IRQ_IXP2000_THDA2        18 /* thread 64-95A */
  50. #define    IRQ_IXP2000_THDA3         19 /* thread 96-127A, IXP2800 only */
  51. #define    IRQ_IXP2000_THDB0        24 /* thread 0-31B */
  52. #define    IRQ_IXP2000_THDB1        25 /* thread 32-63B, IXP2800 only */
  53. #define    IRQ_IXP2000_THDB2        26 /* thread 64-95B */
  54. #define    IRQ_IXP2000_THDB3        27 /* thread 96-127B, IXP2800 only */
  55.  
  56. /* define generic GPIOs */
  57. #define IRQ_IXP2000_GPIO0        32
  58. #define IRQ_IXP2000_GPIO1        33
  59. #define IRQ_IXP2000_GPIO2        34
  60. #define IRQ_IXP2000_GPIO3        35
  61. #define IRQ_IXP2000_GPIO4        36
  62. #define IRQ_IXP2000_GPIO5        37
  63. #define IRQ_IXP2000_GPIO6        38
  64. #define IRQ_IXP2000_GPIO7        39
  65.  
  66. /* split off the 2 PCI sources */
  67. #define IRQ_IXP2000_PCIA        40
  68. #define IRQ_IXP2000_PCIB        41
  69.  
  70. /* Int sources from IRQ_ERROR_STATUS */
  71. #define IRQ_IXP2000_DRAM0_MIN_ERR    42
  72. #define IRQ_IXP2000_DRAM0_MAJ_ERR    43
  73. #define IRQ_IXP2000_DRAM1_MIN_ERR    44
  74. #define IRQ_IXP2000_DRAM1_MAJ_ERR    45
  75. #define IRQ_IXP2000_DRAM2_MIN_ERR    46
  76. #define IRQ_IXP2000_DRAM2_MAJ_ERR    47
  77. /* 48-57 reserved */
  78. #define IRQ_IXP2000_SRAM0_ERR        58
  79. #define IRQ_IXP2000_SRAM1_ERR        59
  80. #define IRQ_IXP2000_SRAM2_ERR        60
  81. #define IRQ_IXP2000_SRAM3_ERR        61
  82. /* 62-65 reserved */
  83. #define IRQ_IXP2000_MEDIA_ERR        66
  84. #define IRQ_IXP2000_PCI_ERR            67
  85. #define IRQ_IXP2000_SP_INT            68
  86.  
  87. #define NR_IXP2000_IRQS                69
  88.  
  89. #define    IXP2000_BOARD_IRQ(x)        (NR_IXP2000_IRQS + (x))
  90.  
  91. #define    IXP2000_BOARD_IRQ_MASK(irq)    (1 << (irq - NR_IXP2000_IRQS))    
  92.  
  93. #define IXP2000_ERR_IRQ_MASK(irq) ( 1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR))
  94. #define IXP2000_VALID_ERR_IRQ_MASK (\
  95.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM0_MIN_ERR) | \
  96.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM0_MAJ_ERR) | \
  97.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM1_MIN_ERR) | \
  98.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM1_MAJ_ERR) | \
  99.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM2_MIN_ERR) | \
  100.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM2_MAJ_ERR) | \
  101.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM0_ERR) | \
  102.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM1_ERR) | \
  103.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM2_ERR) | \
  104.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM3_ERR) | \
  105.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_MEDIA_ERR) | \
  106.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_PCI_ERR) | \
  107.         IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SP_INT)    )
  108.  
  109. /*
  110.  * This allows for all the on-chip sources plus up to 32 CPLD based
  111.  * IRQs. Should be more than enough.
  112.  */
  113. #define    IXP2000_BOARD_IRQS        32
  114. #define NR_IRQS                (NR_IXP2000_IRQS + IXP2000_BOARD_IRQS)
  115.  
  116.  
  117. /* 
  118.  * IXDP2400 specific IRQs
  119.  */
  120. #define    IRQ_IXDP2400_INGRESS_NPU    IXP2000_BOARD_IRQ(0) 
  121. #define    IRQ_IXDP2400_ENET        IXP2000_BOARD_IRQ(1) 
  122. #define    IRQ_IXDP2400_MEDIA_PCI        IXP2000_BOARD_IRQ(2) 
  123. #define    IRQ_IXDP2400_MEDIA_SP        IXP2000_BOARD_IRQ(3) 
  124. #define    IRQ_IXDP2400_SF_PCI        IXP2000_BOARD_IRQ(4) 
  125. #define    IRQ_IXDP2400_SF_SP        IXP2000_BOARD_IRQ(5) 
  126. #define    IRQ_IXDP2400_PMC        IXP2000_BOARD_IRQ(6) 
  127. #define    IRQ_IXDP2400_TVM        IXP2000_BOARD_IRQ(7) 
  128.  
  129. #define    NR_IXDP2400_IRQS        ((IRQ_IXDP2400_TVM)+1)  
  130. #define    IXDP2400_NR_IRQS        NR_IXDP2400_IRQS - NR_IXP2000_IRQS
  131.  
  132. /* IXDP2800 specific IRQs */
  133. #define IRQ_IXDP2800_EGRESS_ENET    IXP2000_BOARD_IRQ(0)
  134. #define IRQ_IXDP2800_INGRESS_NPU    IXP2000_BOARD_IRQ(1)
  135. #define IRQ_IXDP2800_PMC        IXP2000_BOARD_IRQ(2)
  136. #define IRQ_IXDP2800_FABRIC_PCI        IXP2000_BOARD_IRQ(3)
  137. #define IRQ_IXDP2800_FABRIC        IXP2000_BOARD_IRQ(4)
  138. #define IRQ_IXDP2800_MEDIA        IXP2000_BOARD_IRQ(5)
  139.  
  140. #define    NR_IXDP2800_IRQS        ((IRQ_IXDP2800_MEDIA)+1)
  141. #define    IXDP2800_NR_IRQS        NR_IXDP2800_IRQS - NR_IXP2000_IRQS
  142.  
  143. /* 
  144.  * IRQs on both IXDP2x01 boards
  145.  */
  146. #define IRQ_IXDP2X01_SPCI_DB_0        IXP2000_BOARD_IRQ(2)
  147. #define IRQ_IXDP2X01_SPCI_DB_1        IXP2000_BOARD_IRQ(3)
  148. #define IRQ_IXDP2X01_SPCI_PMC_INTA    IXP2000_BOARD_IRQ(4)
  149. #define IRQ_IXDP2X01_SPCI_PMC_INTB    IXP2000_BOARD_IRQ(5)
  150. #define IRQ_IXDP2X01_SPCI_PMC_INTC    IXP2000_BOARD_IRQ(6)
  151. #define IRQ_IXDP2X01_SPCI_PMC_INTD    IXP2000_BOARD_IRQ(7)
  152. #define IRQ_IXDP2X01_SPCI_FIC_INT    IXP2000_BOARD_IRQ(8)
  153. #define IRQ_IXDP2X01_IPMI_FROM        IXP2000_BOARD_IRQ(16)
  154. #define IRQ_IXDP2X01_125US        IXP2000_BOARD_IRQ(17)
  155. #define IRQ_IXDP2X01_DB_0_ADD        IXP2000_BOARD_IRQ(18)
  156. #define IRQ_IXDP2X01_DB_1_ADD        IXP2000_BOARD_IRQ(19)
  157. #define IRQ_IXDP2X01_UART1        IXP2000_BOARD_IRQ(21)
  158. #define IRQ_IXDP2X01_UART2        IXP2000_BOARD_IRQ(22)
  159. #define IRQ_IXDP2X01_FIC_ADD_INT    IXP2000_BOARD_IRQ(24)
  160. #define IRQ_IXDP2X01_CS8900        IXP2000_BOARD_IRQ(25)
  161. #define IRQ_IXDP2X01_BBSRAM        IXP2000_BOARD_IRQ(26)
  162.  
  163. #define IXDP2X01_VALID_IRQ_MASK ( \
  164.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_DB_0) | \
  165.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_DB_1) | \
  166.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTA) | \
  167.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTB) | \
  168.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTC) | \
  169.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTD) | \
  170.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_FIC_INT) | \
  171.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_IPMI_FROM) | \
  172.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_125US) | \
  173.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_DB_0_ADD) | \
  174.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_DB_1_ADD) | \
  175.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_UART1) | \
  176.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_UART2) | \
  177.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_FIC_ADD_INT) | \
  178.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_CS8900) | \
  179.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_BBSRAM) )
  180.  
  181. /* 
  182.  * IXDP2401 specific IRQs
  183.  */
  184. #define IRQ_IXDP2401_INTA_82546        IXP2000_BOARD_IRQ(0)
  185. #define IRQ_IXDP2401_INTB_82546        IXP2000_BOARD_IRQ(1)
  186.  
  187. #define    IXDP2401_VALID_IRQ_MASK ( \
  188.         IXDP2X01_VALID_IRQ_MASK | \
  189.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2401_INTA_82546) |\
  190.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2401_INTB_82546))
  191.  
  192. /*
  193.  * IXDP2801-specific IRQs
  194.  */
  195. #define IRQ_IXDP2801_RIV        IXP2000_BOARD_IRQ(0)
  196. #define IRQ_IXDP2801_CNFG_MEDIA        IXP2000_BOARD_IRQ(27)
  197. #define IRQ_IXDP2801_CLOCK_REF        IXP2000_BOARD_IRQ(28)
  198.  
  199. #define    IXDP2801_VALID_IRQ_MASK ( \
  200.         IXDP2X01_VALID_IRQ_MASK | \
  201.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2801_RIV) |\
  202.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2801_CNFG_MEDIA) |\
  203.         IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2801_CLOCK_REF))
  204.  
  205. #define    NR_IXDP2X01_IRQS        ((IRQ_IXDP2801_CLOCK_REF) + 1)
  206.  
  207. #endif /*_IRQS_H*/
  208.